package plg.grupo1.Lexico.StateMachineHierarchy;

import plg.grupo1.Lexico.TokenHierarchy.TokenControl;
import plg.grupo1.Lexico.TokenHierarchy.TokenDelimitador;
import plg.grupo1.Lexico.TokenHierarchy.TokenValorNumerico;

public class State20 implements State{
	
    private static State20 INSTANCE = null;    
	private State20(){}
	
    private synchronized static void createInstance() {
        if (INSTANCE == null) INSTANCE = new State20();
    }
    
    public static State20 getInstance() {
        if (INSTANCE == null) createInstance();
        return INSTANCE;
    }
    
	public void goNext(){
		
		Contexto.addToken(new TokenControl(Contexto.getLexema().insert(0,'\\')));
		
		if(Contexto.isSetControlWordNum())//controlWord con valor numerico?
			Contexto.addToken(new TokenValorNumerico(new Integer(Contexto.getControlWordNum().toString())));
		if(Contexto.isSetControlWordDelim())//ControlWord con un delimitador?
			Contexto.addToken(new TokenDelimitador(Contexto.getControlWordDelim()));
		
		Contexto.clearLexema();
		Contexto.moveToPreviousChar();
		Contexto.setCurrentState(State0.getInstance());
	}
}
